﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CapaEntidades;
using System.Data;
using System.Data.SqlClient;

namespace CapaDatos
{
    public class datTipoHabitacion
    {
        #region singleton
        private static readonly datTipoHabitacion _instancia = new datTipoHabitacion();
        public static datTipoHabitacion Instancia
        {
            get { return datTipoHabitacion._instancia; }
        }
        #endregion

        #region metodos
        public int RegistrarTipoHabitacionXML(String cadXML)
        {
            SqlCommand cmd = null;
            try
            {
                //Conexion cn = new Conexion();
                SqlConnection conex = Conexion.Instancia.Conectar();
                cmd = new SqlCommand("sp_RegistrarTipoHabitacionXML", conex);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@prmstrCadXML", cadXML);
                conex.Open();
                int i = cmd.ExecuteNonQuery();
                return i;
            }
            catch (Exception e)
            {
                throw e;//pasa el error al objeto que lo invoca.
            }
            finally
            {
                cmd.Connection.Close();
            }
        }
        public bool RegistrarTipoHabitacion(entTipoHabitacion th)
        {
            SqlCommand cmd = null;
            bool retorno = false;
            try
            {
                SqlConnection conex = Conexion.Instancia.Conectar();
                cmd = new SqlCommand("sp_RegistrarTipoHab", conex);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@prmNombreTipoHab", th.NombreTipoHab);
                cmd.Parameters.AddWithValue("@prmPrecio", th.Precio);
                cmd.Parameters.AddWithValue("@prmDescripcion", th.Descripcion);
                cmd.Parameters.AddWithValue("@prmImagen", th.Imagen);
                conex.Open();
                int filas = cmd.ExecuteNonQuery();
                if (filas > 0)
                {
                    retorno = true;
                }

            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                cmd.Connection.Close();
            }
            return retorno;
        }
        public List<entTipoHabitacion> ListarTipoHabitacion()
        {
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            List<entTipoHabitacion> Lista = null;
            try
            {
                SqlConnection conex = Conexion.Instancia.Conectar();
                cmd = new SqlCommand("sp_ListaTipoHabitacion", conex);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                dr = cmd.ExecuteReader();
                Lista = new List<entTipoHabitacion>();
                while (dr.Read())
                {
                    entTipoHabitacion th = new entTipoHabitacion();
                    th.IdTipoHabitacion = Convert.ToInt32(dr["IDTIPOHABITACION"]);
                    th.NombreTipoHab = dr["NOMBRETIPOHAB"].ToString();
                    th.Descripcion = dr["DESCRIPCION"].ToString();
                    th.Precio = Convert.ToDouble(dr["PRECIO"]);
                    th.Imagen = dr["IMAGEN"].ToString();
                    Lista.Add(th);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                cmd.Connection.Close();
            }
            return Lista;
        }
        public entTipoHabitacion BuscarTipoHabxId(Int32 IdTipoHab)
        {
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            entTipoHabitacion th = null;
            try
            {
                SqlConnection conex = Conexion.Instancia.Conectar();
                cmd = new SqlCommand("sp_BuscarTipoHabxId", conex);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@prmIdTipoHab", IdTipoHab);
                conex.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    th = new entTipoHabitacion();
                    th.IdTipoHabitacion = Convert.ToInt32(dr["IDTIPOHABITACION"]);
                    th.NombreTipoHab = dr["NOMBRETIPOHAB"].ToString();
                    th.Precio = Convert.ToDouble(dr["PRECIO"]);
                    th.Descripcion = dr["DESCRIPCION"].ToString();
                    th.Imagen = dr["IMAGEN"].ToString();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                cmd.Connection.Close();
            }
            return th;
        }
        #endregion
    }
}
